package com.gqj.meter.service;

import com.gqj.meter.controller.MdOutTaskDetailsController;
import com.gqj.meter.domain.MdOutTask;
import com.gqj.meter.domain.MdOutTaskDetails;
import org.xml.sax.SAXException;

import javax.xml.parsers.ParserConfigurationException;
import java.io.IOException;
import java.util.List;
import java.util.Map;

/**
 * 出入库明细Service接口
 *
 * @author lxq
 * @date lxq-02-10
 */
public interface IMdOutTaskDetailsService {
    /**
     * 查询出入库明细
     *
     * @param outTaskDetailsId 出入库明细主键
     * @return 出入库明细
     */
    public MdOutTaskDetails selectMdOutTaskDetailsByOutTaskDetailsId(Long outTaskDetailsId);

    /**
     * 查询出入库明细列表
     *
     * @param mdOutTaskDetails 出入库明细
     * @return 出入库明细集合
     */
    public List<MdOutTaskDetails> selectMdOutTaskDetailsList(MdOutTaskDetails mdOutTaskDetails);

    /**
     * 导出出入库明细列表
     *
     * @param mdOutTaskDetails 出入库明细
     * @return 出入库明细集合
     */
    public List<MdOutTaskDetails> exportMdOutTaskDetailsListExcel(MdOutTaskDetails mdOutTaskDetails);

    /**
     * 新增出入库明细
     *
     * @param mdOutTaskDetailsList 出入库明细
     * @return 结果
     */
    public int insertMdOutTaskDetails(List<MdOutTaskDetails> mdOutTaskDetailsList);

    /**
     * 修改出入库明细
     *
     * @param mdOutTaskMap 出入库明细
     * @return 结果
     */
    public int updateMdOutTaskDetails(MdOutTaskDetailsController.MdOutTaskMap mdOutTaskMap) throws IOException, ParserConfigurationException, SAXException;

    /**
     * 批量删除出入库明细
     *
     * @param outTaskDetailsIds 需要删除的出入库明细主键
     * @param assetsCategory 任务类别
     * @return 结果
     */
    public int deleteMdOutTaskDetailsByOutTaskDetailsIds(Long[] outTaskDetailsIds, String assetsCategory);

    /**
     * 删除出入库明细信息
     *
     * @param outTaskDetailsId 出入库明细主键
     * @return 结果
     */
    public int deleteMdOutTaskDetailsByOutTaskDetailsId(Long outTaskDetailsId);

    /**
     * 导入出库明细数据
     *
     * @param outTaskDetailsList 出库明细列表
     * @param outTaskNo          任务编号
     * @return 结果
     */
    public String importMdOutTaskDetails(List<MdOutTaskDetails> outTaskDetailsList, String outTaskNo, String assetsCategory, Boolean isCoverSupport, MdOutTask mdOutTask);

    //修改各大资产业务状态
    public int updateServiceStatus(String assetsCategory, Long assetsId, String serviceStatus);

    /**
     * 查询出库数量信息
     *
     * @return 结果
     */
    public Map<String, Object> getOutNumInfo();

    /**
     * 查询出入库明细数量
     *
     * @param mdOutTaskDetails 出入库明细
     * @return 出入库明细数量
     */
    public int selectMdOutTaskDetailsCount(MdOutTaskDetails mdOutTaskDetails);
}
